<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>07_面试题1</title>
</head>
<body>

<script type="text/javascript">
  //代码片段一
  var name = "The Window";
  var object = {
    name : "My Object",
    getNameFunc : function(){
      // 这里没有用到闭包，因为内部函数没有用到外部函数的变量
      return function(){
        return this.name;
      };
    }
  };
  // object.getNameFunc()()的意思是：
  // 先得到object.getNameFunc()这个函数，
  // 然后直接调用这个函数object.getNameFunc()()
  alert(object.getNameFunc()());  //?  the window


  //代码片段二
  var name2 = "The Window";
  var object2 = {
    name2 : "My Object",
    getNameFunc : function(){
      // 这里用到了闭包：that
      // 这里that保存的是调用getNameFunc这个函数时候的this
      var that = this;
      return function(){
        return that.name2;
      };
    }
  };
  alert(object2.getNameFunc()()); //?  my object



</script>
</body>
</html>